import Vue from 'vue'
import VueRouter from 'vue-router'


Vue.use(VueRouter)

const routes = [
 {
  path:'/home',
  name:'home',
  meta:{title:'home'},
  component:()=>import('../views/Home.vue')
 },
 {
  path:'/mine',
  name:'mine',
  meta:{title:'mine'},
  component:()=>import('../views/Mine.vue')
 },
 {
  path:'/more',
  name:'more',
  meta:{title:'more'},
  component:()=>import('../views/More.vue')
 },
 {
  path:'/order',
  name:'order',
  meta:{title:'order'}, //路由元信息( 会永远保存在当前路由对象身上 )
  component:()=>import('../views/Order.vue')
 },
 //一级路由重定向
 {
  path:'/',
  redirect:'/home'
 },
 //404路由
 {
  path:'*',
  component:()=>import("../views/NotFound.vue")
 },
 {
  path:'/login',
  name:'login',
  meta:{title:'登录'},
  component:()=>import ('../views/Login.vue')
 },
 {
  path:'/register',
  name:'register',
  meta:{title:'注册'},
  component:()=> import ('../views/Register.vue')
 },
 //路由地址中带有 ：xxx的路由地址 都属于动态路由
 // path: '/detail/:name', // :name 是个占位符, 实际在跳路由的时候,会动态拼接参数 例如: '/detail/'+100

]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})
//设置实例方法（导航守卫方法）
//路由的全局前置守卫方法
router.beforeEach((to,from,next)=>{
  //参数一：to新的路由对象
  //参数二：from旧的路由对象
  //参数三：next路由控制方法，调用该方法则允许路由跳转，未调用该方法则不允许

  //动态更新网页标题
  document.title = to.meta.title;

  //获取localStorage中的登录凭证
  var token = localStorage.getItem('token');

  //只有在登录以后，才可以跳转到订单页
  // if(to.path == '/order' || to.path == '/mine'){ //想要跳往 订单页 或者 我的页面
  //   if(token){
  //     next();
  //   }else{
  //     next('/login');
  //   }

  // }else{//其他页面
  //   next('/home');//必须手动调用该函数, 否则无法完成路由跳转

  // }


  //对于后台管理系统这种应用, 只有登录页是可以随意访问的, 但是其他所有页面都是必须在登陆以后才可以访问
  // if( to.path == '/register' ){ //跳往 注册页 , 允许跳转
  //   next();
  // }else{
  //   if( to.path == '/login' ){ //跳往 登录页

  //     if( token ){ //已登录 , 重定向到 "/"
  //       next();
  //     }else{ //未登录 , 允许跳往 登录页
  //       next('/login'); 
  //     }
  //     // next();
  //   }else{ //跳往 非登录页
  //     if( token ){ //已登录 , 允许访问
  //       next(); 
  //     }else if(to.path == '/order' || to.path == '/mine'){ //未登录 , 重定向到 "/login"
  //       next('/login');
  //       }
  //   }
  // }
  if( to.path == '/register' ){ //跳往 注册页 , 允许跳转
    next();
  }else{
    if( to.path == '/login' && to.path == '/order' || to.path == '/mine'){ //跳往 登录页
      if( token ){ //已登录 , 重定向到 "/"
        next();
      }else{ //未登录 , 允许跳往 登录页
        next(); 
      }
      
    }else{ //跳往 非登录页
      if( token ){ //已登录 , 允许访问
        next(); 
      }else{ //未登录 , 重定向到 "/login"
        next('/login');
      }
    }
  }
  })
 

export default router
